package com.zq.vaccinum.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

//定义拦截器允许跨域访问
@Configuration
public class UrlCorsConfig implements WebMvcConfigurer{
//    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
//        HttpServletResponse response = (HttpServletResponse) res;
//        // 允许跨域访问的地址【前端项目部署的地址】
//        response.setHeader("Access-Control-Allow-Origin", "http://localhost:8089");
//        // 允许跨域的请求方法GET, POST, HEAD 等
//        response.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE");
//        // 重新预检验跨域的缓存时间 (s)
//        response.setHeader("Access-Control-Max-Age", "3600");
//        // 允许跨域的请求头
//        response.setHeader("Access-Control-Allow-Headers", "x-requested-with,Content-Type,X-CAF-Authorization-Token,sessionToken,X-TOKEN");
//        // 是否携带cookie
//        response.setHeader("Access-Control-Allow-Credentials", "true");
//        // 设置响应的类型及字符集编码
//        response.setContentType("text/json;charset=utf-8");
//        // 设置响应的中文编码
//        chain.doFilter(req, res);
//        // 放行
//    }
//
//    public void init(FilterConfig filterConfig) {
//    }
//
//    public void destroy() {
//    }

//    @Bean
//    public WebMvcConfigurer corsConfigurer() {
//        return new WebMvcConfigurer() {
//            @Override
//            public void addCorsMappings(CorsRegistry registry) {
//                registry.addMapping("/**")
//                        .allowCredentials(true)
//                        .allowedOrigins("http://localhost:8089")
//                        .allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")
//                        .allowedHeaders("*")
//                        .exposedHeaders("*");
//            }
//        };
//    }

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        // 允许跨域的路径
        registry.addMapping("/**")
                .allowCredentials(true) // 是否携带cookie
                .allowedOrigins("http://localhost:8089")  // 允许跨域气请求的域名
                .allowedMethods("POST", "GET", "PUT", "DELETE")  // 允许请求的方式
                .allowedHeaders("*")    // 设置允许的的header属性
                .maxAge(3600);  // 允许跨域的时间
    }
}
